A programmable execution unit (PEU) typically refers to an integrated circuit (IC) that can be programmed to perform specified functions to provide specialized functionality to a variety of devices. PEUs are often used in digital signal processing devices, such as modems and video recorders, for example. There are various types of PEU""s, such as, for example, a Programmable Read-Only Memory (PROM), a programmable logic array (PLA), a programmable array logic (PAL), a generic array logic (GAL), and a field-programmable gate array (FPGA).
A PEU is usually comprised of programmable logic elements, such as arrays of logic gates, which can be manipulated such that the PEU performs particular functions. In this regard, a system designer typically manipulates the gates within a PEU by implementing a logic design with a device programmer that blows fuses on the PEU to control the architecture and functionality of the logic gates.
In order for a system designer to program a PEU, the designer oftentimes uses placement and routing software (PandR software) for creating the logic design to be implemented via the PEU. The PandR software usually comprises a user-friendly graphical interface that allows simple and efficient programming of the PEU. Once the logic design has been defined, the PandR software creates a bit stream, representative of the logic design created by the system designer via the graphical user interface. This bit stream is then transmitted to a PEU, for example an FPGA, and logic resident on the PEU programs the PEU based on the received bit stream.
Typically, the bit stream is transmitted to the PEU via an observable channel, such as for example, a system on chip (SoC) bus. As such, it is possible to siphon the bit stream from the observable channel and use the bit stream to program unauthorized PEUs. Utilizing such techniques, it is possible for competitors or unauthorized users to effectively steal the logic design created by the system designer and to illegally program a large number of PEUs with the stolen logic design.
Generally, embodiments of the present invention provide systems and methods for protecting configuration data of a programmable execution unit (PEU).
One embodiment of a system in accordance with the present invention comprises a programmable array and programming logic. The programming logic is configured to receive configuration data and to program the programmable array, based on the configuration data, such that the programmable array comprises functional logic and activation logic. The activation logic is configured to enable the functional logic upon detection of an activation key.
One embodiment of a method in accordance with the present invention comprises the steps of: receiving configuration data; programming a PEU, based on the configuration data, such that the PEU comprises functional logic and activation logic, and enabling the functional logic upon detection of an activation key by the activation logic.